package com.tianhao.luo.nouse.simplefactory;

import com.tianhao.luo.nouse.product.Iphone;
import com.tianhao.luo.nouse.product.Iphone11;
import com.tianhao.luo.nouse.product.IphoneXR;
import com.tianhao.luo.nouse.product.IphoneXS;

/**
 * @Date 2019/12/10
 * @Author tianhao.luo
 * @Description 简单工厂模式，其实都算不上模式
 * 因为，这个生产对象的条件比较局限化，无法满足
 * 开闭原则（面对修改关闭，面对扩展开放）。
 * 如下的代码，输入一个type参数，程序来根据type判断
 * 要生成哪种产品。当以后需要生产一个不在条件判断中的
 * 产品，那就需要新加判断，修改工厂的创建方法。
 * 如果用工厂模式来实现的话，工厂是抽象的，以后如果有
 * 新的产品需要生成，只需要用一个新的工厂类来实现抽象
 * 工厂的生成方法，而不需要修改抽象工厂这个父类。
 */
public class SimpleFactory {
    public static Iphone createByType(String type) {
        switch (type) {
            case "a":
                return new IphoneXR();
            case "b":
                return new Iphone11();
            case "c":
                return new IphoneXS();
                default:
                    return null;
        }
    }
}
